package com.rchat.pocmini.activity.recharge;

import android.content.Context;

import com.aso.common.http.delegate.HttpCallbackImpl;
import com.rchat.pocmini.bean.RechargeResultBean;
import com.rchat.pocmini.common.mvp.BaseModel;
import com.rchat.pocmini.common.mvp.BasePresenter;
import com.rchat.pocmini.common.mvp.BaseView;

import java.util.List;

/**
 * @Description ：
 * @Author itsdf07
 * @Time 2017/9/27
 */

public interface RechargeContract {
    interface View extends BaseView {
        /**
         * 显示价格
         *
         * @param month     一个月的价格
         * @param oneYear   一年的价格
         * @param twoYear   两年的价格
         * @param threeYear 三年的价格
         */
        void showPrice(String month, String oneYear, String twoYear, String threeYear);

        /**
         * 展示收费详情
         *
         * @param moneyForOneMonth  一个月的价格
         * @param moneyForOneYear   一年的价格
         * @param moneyForTwoYear   两年的价格
         * @param moneyForThreeYear 三年的价格
         */
        void showRechargeInfoDialog(String moneyForOneMonth, String moneyForOneYear, String moneyForTwoYear, String moneyForThreeYear);

        /**
         * 显示已充值的记录
         *
         * @param orders 已充值的记录
         */
        void showRechargeResult(List<RechargeResultBean.DataBean.OrdersBean> orders);
    }

    abstract class Presenter extends BasePresenter<View, Model> {
        /**
         * 查询价格
         */
        abstract void queryPriceList();

        /**
         * 下次不显示收费详情
         *
         * @param showNextTime 是否不显示
         */
        abstract void noShowRechargeInfoNextTime(boolean showNextTime);

        /**
         * 查询充值记录
         */
        abstract void queryRechargeResult();

        /**
         * 更新账号的会员过期时间
         */
        abstract void updateAccountDate();

        /**
         * 充值
         *
         * @param type  类型，按月，按年
         * @param month 按月的话，几个月
         */
        abstract void recharge(int type, String month);
    }

    interface Model extends BaseModel {
        /**
         * 获取充值会员的价格表
         *
         * @param callback
         */
        void queryPriceList(HttpCallbackImpl callback);

        void queryRechargeResult(String userName, HttpCallbackImpl callback);

        void noShowRechargeInfoNextTime(Context context, boolean noShowNextTime);

        boolean isNoShowRechargeInfoNextTime(Context context);

        void applyTradeNo(String goodsName, String price, int tradeTypeId, HttpCallbackImpl callback);
    }

}
